34 research outputs found

    Static Detection of Atomicity Violations in Object-Oriented Programs.

    Full text link

    SmartTrack: Efficient Predictive Race Detection

    Full text link
    Widely used data race detectors, including the state-of-the-art FastTrack algorithm, incur performance costs that are acceptable for regular in-house testing, but miss races detectable from the analyzed execution. Predictive analyses detect more data races in an analyzed execution than FastTrack detects, but at significantly higher performance cost. This paper presents SmartTrack, an algorithm that optimizes predictive race detection analyses, including two analyses from prior work and a new analysis introduced in this paper. SmartTrack's algorithm incorporates two main optimizations: (1) epoch and ownership optimizations from prior work, applied to predictive analysis for the first time; and (2) novel conflicting critical section optimizations introduced by this paper. Our evaluation shows that SmartTrack achieves performance competitive with FastTrack-a qualitative improvement in the state of the art for data race detection.Comment: Extended arXiv version of PLDI 2020 paper (adds Appendices A-E) #228 SmartTrack: Efficient Predictive Race Detectio

    Compiler-Based Object Consistency(Preliminary Version)

    No full text
    In existing systems, optimizations of memory access operations by the compiler and the hardware implementation (like reordering or out-of-order execution) wreack havoc with SC and thus also with OC. This paper describes a solution that provides SC/OC to the programmer while allowing traditional compiler transformations when executing on realistic machines. The key idea is to separate the aspects of control-flow and memory synchronizations shifting the responsibility to maintain memory and Object Consistency from the programmer to the compiler and (language) runtime system. The integrated system maintains dynamic consistency domains for each thread and synchronizes memory whenever the domain is enlarged or reduced. In addition, accesses violating OC are detected. Since executions always experience a SC memory view, such parallel programs are platformindependent. The paper contains a preliminary evaluation based on Java, demonstrating that compile-time analysis for typical programs unveils sufficient information about concurrency; this information helps to significantly reduce the amount of memory synchronization and access checking necessary for providing OC

    Static Detection of Atomicity Violations in Object-Oriented Programs

    No full text
    Violations of atomicity are possible sources of errors in parallel programs. A violation occurs if the effect of a method depends on the execution of concurrent threads that operate on the same shared data. Such unwanted thread interference can occur even if access to shared data is ordered through synchronization, hence common techniques for data race detection are not able to find such errors. We have developed a static analysis that infers atomicity constraints and identifies potential violations. The analysis is based on an abstract model of threads and data. A symbolic execution tracks object locking and access and provides information that is finally used to determine potential violations of atomicity. We provide a detailed evaluation of our algorithm for several Java programs. Although the algorithm does not guarantee to find all violations of atomicity, our experience shows that the method is efficient and effective in determining several known synchronization problems in a number of applications and the Java library. The problem of overreporting that is commonly encountered due to conservatism in static analyses is moderate.

    Abstract Implicit Parallelism with Ordered Transactions

    No full text
    Implicit Parallelism with Ordered Transactions (IPOT) is an extension of sequential or explicitly parallel programming models to support speculative parallelization. The key idea is to specify opportunities for parallelization in a sequential program using annotations similar to transactions. Unlike explicit parallelism, IPOT annotations do not require the absence of data dependence, since the parallelization relies on runtime support for speculative execution. IPOT as a parallel programming model is determinate, i.e., program semantics are independent of the thread scheduling. For optimization, non-determinism can be introduced selectively. We describe the programming model of IPOT and an online tool that recommends boundaries of ordered transactions by observing a sequential execution. On three example HPC workloads we demonstrate that our method is effective in identifying opportunities for fine-grain parallelization. Using the automated task recommendation tool, we were able to perform the parallelization of each program within a few hours
    corecore